package com.dl.mall.service.user;

import com.dl.mall.entity.Cart;
import com.dl.mall.entity.vo.CartVo;

import java.util.List;

/**
 * 购物车服务层
 * @author DL
 * @create 2022-03-24 20:20
 */
public interface CartService {

    /* 购物车页面的购物车加减 */

    /**
     * 普通减少，无逻辑
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 是否成功
     */
    boolean decreaseCart(String userId, String specsId);

    /**
     * 普通添加，无逻辑
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 是否成功
     */
    boolean increaseCart(String userId, String specsId);
    /* 购物车页面的购物车加减 end*/


    /**
     * 向购物车添加商品，普通添加无逻辑
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 是否成功
     */
    boolean addCart(String userId, String specsId);

    /**
     * 向购物车添加商品，逻辑添加，先判断是否存在；存在则是更新数量
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 是否成功
     */
    boolean addCart(String userId, String specsId, boolean isComplex);

    /**
     * 删除购物车某项商品
     * @param userId 用户名
     * @param specsIdList 产品规格id
     * @return 是否成功
     */
    boolean removeCart(String userId, List<Object> specsIdList);

    /**
     * 向购物车添加商品
     * @param userId 用户名
     * @param specsId 产品规格id
     * @param count 个数
     * @return 是否成功
     */
    boolean modifyCart(String userId, String specsId, int count);

    /**
     * 根据 用户id 和 规格id（sku） 查询购物车
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 是否存在
     */
    Cart getCart(String userId, String specsId);

    /**
     * 根据 用户id 查询购物车所有产品
     * @param userId 用户id
     * @return 购物车所有产品
     */
    List<CartVo> getAllCart(String userId);
}
